Reflect出现的目的
1.把Object对象中的一些明显属于语言内部的方法,放到Reflect对象上,比如Object.defineProperty。就是说可以把Reflect对象上可以拿到语言内部的方法。
2.修改某些Object方法的返回结果,让其变得合理。Object.defineProperty(target, property, attributes)在无法定义属性时,会抛出一个错误,而Reflect.defineProperty(obj,name,desc)则会返回false.
3.让Object操作变成函数行为。某些Object操作时命令式的,比如name in obj和delete obj[name],而Reflect.has(obj,name)和Reflect.deleteProperty(obj, name)让他们变成函数行为。
4.Reflect对象方法与Proxy对象的方法一一对应,只要是Proxy对象的方法,就能在Reflect对象上找到对应的方法。
Reflect中包含的方法
Reflect.apply(target,thisArg,args)
Reflect.construct(target,args)
Reflect.get(target,name,receiver)
Reflect.set(target,name,value,receiver)
Reflect.defineProperty(target,name,desc)
Reflect.deleteProperty(target,name)
Reflect.has(target,name)
Reflect.ownKeys(target)
Reflect.isExtensible(target)
Reflect.preventExtensions(target)
Reflect.getOwnPropertyDescriptor(target, name)
Reflect.getPrototypeOf(target)
Reflect.setPrototypeOf(target, prototype)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。